<?php 
namespace slinks\extensions\aop\core;


/**
 * Interface for all aop interceptors. 
 * 
 * @author Navid Mitchell
 *
 */
interface IInterceptor {
	
	/**
	 * Called prior to executing the intercepted method.
	 * 
	 * @param String $className is the className of the class whose method is being executed.
	 * @param String $methodName is the name of the method being called.
	 * @param array $arguments is an enumerated array containing the parameters passed to the $name'ed method.
	 */
	public function before($className,$methodName,$arguments);
	
	
	/**
	 * Called after executing the intercepted method.
	 * 
	 * @param String $className is the className of the class whose method is being executed.
	 * @param String $methodName is the name of the method being called.
	 * @param array $arguments is an enumerated array containing the parameters passed to the $name'ed method.
	 * @param $return the value returned from the intercepted method.
	 */
	public function after($className,$methodName,$arguments,$return=null);
	
	
	public function exception($className,$methodName,$arguments, \Exception $exception);
	
}